/* Календарь гагесов */

var curDate;
var curNavDate;

if (typeof curDate == 'undefined')
{
	curDate = new Date();
	var gage_calendar_date = getCookie('gage_calendar_date');
	if (gage_calendar_date)
		curDate.setTime(gage_calendar_date);
	
	curNavDate = new Date(curDate);
}

function saveCurDate()
{
	//setCookie('gage_calendar_date', curDate.getTime());
}

function serializeDate(date)
{
	var val = (date.getDate()  > 9 ? date.getDate().toString()  : "0" + date.getDate().toString()) +
		   (date.getMonth() > 8 ? (date.getMonth() + 1).toString() : "0" + (date.getMonth() + 1).toString()) +
		    date.getFullYear();

	return val;
}

/* Загрузка событий календаря. Все параметры передаются в params-объекте */

function loadCalendarEvents(params, on_load)
{
	var q_arr = Array();
	for (var k in params)
		q_arr.push(k + "=" + params[k]);

	var q_str = "/common/get_cd_new.php?" + q_arr.join("&");
	$.ajax({
		type: "GET",
		url: q_str,
		async: false,
		success: function(data){data=eval("("+data+")");on_load(data)}
	});
	//$.getJSON(q_str, on_load);
}

/* Загрузка событий двух команд для календаря приглашений */

function loadBothCalendarEvents(histeam_id, date, on_load)
{
	var result = Array();

	// Наши события
	var q_str = "/common/get_cd_new.php?type=myevent&date=" + date;

	// Делаем синхронный запрос
	eval("result.my = " +	
		$.ajax({
			type: "GET",
			url: q_str,
			async: false
		}).responseText
		+ ";"
	);

	// Чужие события
	q_str = "/common/get_cd_new.php?type=hisevent&team_id=" + histeam_id + "&date=" + date;
	eval("result.his = " + 
		$.ajax({
			type: "GET",
			url: q_str,
			async: false
		}).responseText
		+ ";"
	);

	result.team_id = histeam_id;

	if (typeof on_load == 'function') on_load(result);
}

/* HTML-кусок для календаря */

function getCalendarHtml(settings, data, is_my)
{
	if (typeof settings == 'undefined') settings = {};
	if (typeof data == 'undefined') data = {};

	var wdays  = (typeof settings.wdays  != 'undefined') ? settings.wdays  : ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
	var months = (typeof settings.months != 'undefined') ? settings.months : ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
	var weekstart = (typeof settings.weekstart != 'undefined') ? settings.weekstart : 1;
	var onClickDay = (typeof settings.onClickDay != 'undefined') ? settings.onClickDay : "";

	var dt_today = new Date();
	var dt_current = new Date(curNavDate);
	var dt_selected = new Date(curDate);
	var dt_from = new Date(dt_current);
	dt_from.setDate(1);
	dt_from.setDate(1 - (7 + dt_from.getDay() - weekstart) % 7);

	var calendarHtml = '<table class="table"><tr>';
	for (var i = 0; i < 7; i++)
	{
		calendarHtml += '<td>' + wdays[(i + weekstart)%7] + '</td>'
	}
	calendarHtml += '</tr>';
	
	var cur = new Date(dt_from);
	while (cur.getMonth() == dt_from.getMonth() || cur.getMonth() == dt_current.getMonth())
	{
		calendarHtml += '<tr>';
		for (var j = 0; j < 7; j++)
		{
			var val = serializeDate(cur);
			var dkey = "d" + val;
			var is_active = (cur.getMonth() == dt_current.getMonth());  // День является днем текущего месяца
			var is_past   = (data.past.indexOf(dkey) >= 0 ? true : false);
			var is_today  = (cur.getMonth() == dt_today.getMonth() && cur.getDate() == dt_today.getDate() && cur.getFullYear() == dt_today.getFullYear());
			var is_selected  = (cur.getMonth() == dt_selected.getMonth() && cur.getDate() == dt_selected.getDate() && cur.getFullYear() == dt_selected.getFullYear());
			var ad_class = "";
			
			if (is_my)
			{
				if (typeof data.inv[dkey] != 'undefined')
				{
					// Есть активные приглашения в этот день
					ad_class = ' cday_event_active';
				}
				else if (typeof data.gages[dkey] != 'undefined')
				{
					// Есть гагес на этот день
					if (data.gages[dkey].free) ad_class = ' cday_event_passive';
					else ad_class = ' cday_gage' + (is_past ? '_past' : '');
				}
				else if (typeof data.myinv[dkey] != 'undefined')
				{
					// Есть наши приглашения в этот день
					ad_class = ' cday_event_passive';
				}
			}
			else if (typeof data.gages[dkey] != 'undefined')
			{
				if (data.gages[dkey].free)
					ad_class = ' cday_event_passive';
				else
					//ad_class = ' cday_gage';
					ad_class = ' cday_gage' + (is_past ? '_past' : '');
			}

			calendarHtml += '<td class="cday' + (is_active ? ' cday_active' : '') + (is_today ? ' cday_today' : '') + (is_past ? ' cday_past' : '') + (is_selected && is_active ? ' cday_selected' : '') + ad_class + ' cday_' + val + '"'
				+ ((onClickDay && is_active && !is_past) ? ' onclick="' + onClickDay + '(\'' + val + '\');"' : '') + '>' + cur.getDate() + '</td>';

			cur.setDate(cur.getDate() + 1);
		}

		calendarHtml += '</tr>';
	}



	calendarHtml += '</table>';
	return {"html": calendarHtml, "month": months[dt_current.getMonth()], "year": dt_current.getFullYear() };
}


//=================================================================================================================================
// Дальше старое

/** Функция загрузки информации о гагесах двух команд на месяц. Дата берется из curDate
 *
 * Аргументы:
 *   from_cap_id - от капитана
 *   to_cap_id   - к капитану
 *   lang_id     - язык
 *   on_load     - метод, который вызовется после загрузки данных
 *
 * Формат выгрузки:
 *   capitan_id - id нашего капитана
 *   capitan - имя нашего капитана (нас самих)
 *   team    - имя нашей команды
 *   gages   - наши гагесы (массив, где ключ - дата)
 *
 *   op_capitan_id
 *   op_capitan
 *   op_team     - то же для команды оппонента
 *   op_gages    
 */

function loadInvitationCalendarData(from_cap_id, to_cap_id, date, on_load)
{
	var dst_date = new Date(date);
	var q_str = "/common/get_calendar_data.php?type=inv&from=" + from_cap_id + "&to=" + to_cap_id + "&date=" + serializeDate(dst_date) + "&rnd=" + Math.round(Math.random()*1000);

	$.ajax({
		type: "GET",
		url: q_str,
		async: false,
		success: function(data){data=eval("("+data+")");on_load(data)}
	});
	//$.getJSON(q_str, on_load);

}

/**
 *  Загрузка календаря команды
 */

function loadEventCalendarData(team_id, date, on_load)
{
	var dst_date = new Date(date);
	var q_str = "/common/get_calendar_data.php?type=event&team=" + team_id + "&date=" + serializeDate(dst_date) + "&rnd=" + Math.round(Math.random()*1000);
	//alert(q_str);

	$.ajax({
		type: "GET",
		url: q_str,
		async: false,
		success: function(data){data=eval("("+data+")");on_load(data)}
	});
	//	$.getJSON(q_str, on_load);
}

/* HTML-кусок для календаря команды */

function getEventCalendarHtml(settings, data)
{
	return getInvitationCalendarHtml(settings, data);
}


/* HTML-кусок для календаря приглашений */

function getInvitationCalendarHtml(settings, data)
{
	if (typeof settings == 'undefined') settings = {};
	if (typeof data == 'undefined') data = {};

	var wdays  = (typeof settings.wdays  != 'undefined') ? settings.wdays  : ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
	var months = (typeof settings.months != 'undefined') ? settings.months : ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
	var weekstart = (typeof settings.weekstart != 'undefined') ? settings.weekstart : 1;
	var onClickDay = (typeof settings.onClickDay != 'undefined') ? settings.onClickDay : "";

	var dt_today = new Date();
	var dt_current = new Date(curNavDate);
	var dt_selected = new Date(curDate);
	var dt_from = new Date(dt_current);
	dt_from.setDate(1);
	dt_from.setDate(1 - (7 + dt_from.getDay() - weekstart) % 7);

	var calendarHtml = '<table class="table"><tr>';
	for (var i = 0; i < 7; i++)
	{
		calendarHtml += '<td>' + wdays[(i + weekstart)%7] + '</td>'
	}
	calendarHtml += '</tr>';
	
	var cur = new Date(dt_from);
	while (cur.getMonth() == dt_from.getMonth() || cur.getMonth() == dt_current.getMonth())
	{
		calendarHtml += '<tr>';
		for (var j = 0; j < 7; j++)
		{
			var is_active = (cur.getMonth() == dt_current.getMonth());
			var is_past = (cur.getTime() < dt_today.getTime());
			var is_today  = (cur.getMonth() == dt_today.getMonth() && cur.getDate() == dt_today.getDate() && cur.getFullYear() == dt_today.getFullYear());
			var is_selected  = (cur.getMonth() == dt_selected.getMonth() && cur.getDate() == dt_selected.getDate() && cur.getFullYear() == dt_selected.getFullYear());
			var val = serializeDate(cur);
			
			var ad_class = "";
			if (typeof data["d" + val] != 'undefined')
			{
				// Есть гагес на этот день
				if (data["d" + val].open) ad_class = ' cday_gage';
				else ad_class = ' cday_bisy';
			}


			calendarHtml += '<td class="cday' + ((is_active && (!is_past || is_today)) ? ' cday_active' : '') + (is_past ? ' cday_past' : '') + (is_today ? ' cday_today' : '') + (is_selected && is_active ? ' cday_selected' : '') + ad_class + ' cday_' + val + '"'
				+ ((onClickDay && is_active && (!is_past || is_today)) ? ' onclick="' + onClickDay + '(\'' + val + '\');"' : '') + '>' + cur.getDate() + '</td>';

			cur.setDate(cur.getDate() + 1);
		}

		calendarHtml += '</tr>';
	}



	calendarHtml += '</table>';
	return {"html": calendarHtml, "month": months[dt_current.getMonth()], "year": dt_current.getFullYear() };
}
